home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-07-28 | 14.1 KB | 650 lines | [TEXT/MPS ] |
- /*
- File: DebuggingMenus.cp
-
- Copyright: © 1991-1994 by Apple Computer, Inc.
- All rights reserved.
-
- Part of the AOCE Sample SMSAM Package. Consult the license
- which came with this software for your specific legal rights.
-
- */
-
-
-
- #ifndef __BLJSTANDARDINCLUDES__
- #include "BLJStandardIncludes.h"
- #endif
-
- #ifndef __EVENTS__
- #include <Events.h>
- #endif
-
- #ifndef __MENUS__
- #include <Menus.h>
- #endif
-
- #ifndef __DESK__
- #include <Desk.h>
- #endif
-
- #ifndef __DEBUGGINGGEAR__
- #include "DebuggingGear.h"
- #endif
-
- #ifndef __DEBUGGINGMENUS__
- #include "DebuggingMenus.h"
- #endif
-
- #ifndef __DEBUGASSERT__
- #include "DebugAssert.h"
- #endif
-
- #ifndef __BOVINECONSTANTS__
- #include "BovineConstants.h"
- #endif
-
- #ifndef __DEBUGCONSTANTS__
- #include "DebugConstants.h"
- #endif
-
- #ifndef __RESOURCES__
- #include "Resources.h"
- #endif
-
- #ifndef __DISKLOG__
- #include "DiskLog.h"
- #endif
-
- #ifndef __LETTERLOGWINDOW__
- #include "LetterLogWindow.h"
- #endif
-
- #ifndef __STATUSWINDOW__
- #include "StatusWindow.h"
- #endif
-
- #ifndef __STDIO__
- #include <stdio.h>
- #endif
-
- #ifndef __WRITELINEWINDOW__
- #include "WriteLineWindow.h"
- #endif
-
- #ifndef __TRANSCRIPTWINDOW__
- #include "TranscriptWindow.h"
- #endif
-
- #ifndef __BOVINESERVER__
- #include "BovineServer.h"
- #endif
-
- /***********************************|****************************************/
-
- void BreakStr ( const Str255 str );
-
- /***********************************|****************************************/
-
- unsigned short gCurrentGatewayNumber = 0;
- extern void CreateMailGatewayN(short n);
- extern class TMailGateway* gMailGateway;
-
- #define HighWord(x) (x >> 16)
- #define LowWord(x) ( x & 0xffff)
-
- extern Boolean GetAutostartOption();
- extern void ToggleAutostartOption();
- extern short gApplicationFile;
- extern TStatusWindow * gStatusWindow;
- extern TStatusWindow * gAboutBox;
-
- extern TTranscriptWindow * gTranscriptWindow;
-
- /***********************************|****************************************/
-
- #pragma segment Initialize
- void InitializeDebuggingMenus ()
- {
- Handle menuBar = GetNewMBar(kMenuBar); /* read menus into menu bar */
-
- if ( menuBar )
- {
- SetMenuBar(menuBar); /* install menus */
- DeallocateHandle(menuBar);
-
- AddResMenu ( GetMHandle ( kAppleMenu ), 'DRVR' );
-
- // Some debug flags should always be reset to off upon startup.
- debugFlag.SetFlag(1, false);
-
- DrawMenuBar();
- }
- else
- {
- BreakStr ( "\pResources were not properly built!" );
- ExitToShell ();
- }
- }
-
- /***********************************|****************************************/
-
- #pragma segment DebuggingMenus
- void DisplayMemoryInfo()
- {
- Size freeSize, largestBlock, growSize, stackSpace;
- static Size lastFree = 0, lastLargest = 0;
-
- PurgeMem(maxSize);
- largestBlock = MaxMem(&growSize);
- freeSize = FreeMem();
-
- keith << "\n"
- "===================================================\n"
- "BovineServer Memory/heap information ";
- {
- unsigned long dateTime;
- Str255 resultStr255;
-
- GetDateTime (&dateTime);
- IUDateString(dateTime,shortDate, resultStr255);
- keith << resultStr255 << " ";
-
- IUTimeString(dateTime, true, resultStr255);
- keith << resultStr255 << "\n";
- }
-
- keith << " Free mem: " << freeSize << ", Δ" << (long) freeSize - (long) lastFree << "\n";
- keith << " Max mem: " << largestBlock << ", Δ" << (long) largestBlock - (long) lastLargest << "\n";
- keith << " Stack space: " << StackSpace()<< "\n";
- keith << "===================================================\n" << "\n";
-
- lastFree = freeSize;
- lastLargest = largestBlock;
- }
-
- /***********************************|****************************************/
-
- void SetFlagsMenu ( short menuID, TDebugFlag& flag )
- {
- MenuHandle menuHandle = GetMHandle ( menuID );
- short count = CountMItems ( menuHandle );
-
- for ( short index = 1; index <= count; index++ )
- CheckItem ( menuHandle, index, flag.Flag ( index ) );
- }
-
- /***********************************|****************************************/
-
- void SetItemEnable ( MenuHandle menuH, short whichItem, Boolean s )
- {
- if ( s ) {
- EnableItem ( menuH, whichItem ) ;
- } else
- {
- DisableItem ( menuH, whichItem) ;
- }
- }
-
- /***********************************|****************************************/
-
- void AdjustMenus()
- {
- // If the gateway is paused, then check that menu item
- CheckItem (GetMHandle (kControlMenu), kControlPause, IsGatewayPausing() );
- // CheckItem(GetMHandle (kDebugMenu), kDebugShowMemoryOften, debugFlag.Flag(1));
-
- // Always disable the Edit menu items
- MenuHandle menuH = GetMHandle(kEditMenu);
- CheckItem(menuH, 1, false);
- CheckItem(menuH, 3, false);
- CheckItem(menuH, 4, false);
- CheckItem(menuH, 5, false);
- CheckItem(menuH, 6, false);
-
- #if debug
- // Do the stuff in the Debug menu
- menuH = GetMHandle(kGatewayMenu);
- CheckItem(menuH, kAutostart2020Item, GetAutostartOption());
-
- // make sure the current gateway item is checked
- static short gLastGatewayNumber = 0;
- if ( gLastGatewayNumber != 0 && gLastGatewayNumber != gCurrentGatewayNumber )
- CheckItem ( menuH, gLastGatewayNumber, false);
- if ( gCurrentGatewayNumber != 0 )
- CheckItem ( menuH, gCurrentGatewayNumber, true);
- gLastGatewayNumber = gCurrentGatewayNumber;
-
- menuH = GetMHandle(kConfigMenu);
- SetItemEnable (menuH, kConfigShowConfig, gMailGateway != nil );
- SetItemEnable (menuH, kConfigShowStatus, gMailGateway != nil );
- SetItemEnable (menuH, kConfigSetConfig, gMailGateway != nil );
-
- // Set up the 'debug-only' items in the Control menu.
- SetItemEnable ( GetMHandle ( kControlMenu ), kControlShowMemoryInfoOften, false );
-
- SetFlagsMenu ( kKeithMenu, keithFlag );
- SetFlagsMenu ( kSteveMenu, steveFlag );
- SetFlagsMenu ( kChrisMenu, chrisFlag );
- SetFlagsMenu ( kAddressesMenu, addressTypesFlag );
- #endif
- }
-
- /***********************************|****************************************/
-
- void ShowAboutDialog ()
- {
- TDialogWindow * aboutBox = new TDialogWindow ( kAboutDialog, kAboutDialog );
-
- // Get the 'vers' resource, so we can display it in the about box.
-
- short savedResFile = CurResFile();
- UseResFile(gApplicationFile);
- Handle versionResource = Get1Resource ('vers', 1);
- UseResFile (savedResFile);
-
- if (versionResource)
- {
- HLock (versionResource);
- NumVersion *versionRec = (NumVersion *) *versionResource;
- Str255 versionString;
- short nonReleaseRevNumber;
-
- char devCode = '?';
- nonReleaseRevNumber = 10 * (versionRec->nonRelRev >> 4) + (versionRec->nonRelRev & 0xF);
- switch (versionRec->stage)
- {
- case developStage: devCode = 'd'; break;
- case alphaStage: devCode = 'a'; break;
- case betaStage: devCode = 'b'; break;
- case finalStage: devCode = 'f'; break;
- }
-
- versionString[0] = sprintf ((char *) versionString, "* version resource %d.%d.%d%c%d",
- versionRec->majorRev,
- versionRec->minorAndBugRev >> 4,
- versionRec->minorAndBugRev & 0xF,
- devCode,
- nonReleaseRevNumber)
- - 1;
- aboutBox->SetItemText (3, versionString);
- ReleaseResource (versionResource);
- }
-
- aboutBox->SelectWindow();
- /* aboutBox->PoseModally();*/
- /* aboutBox->HideWindow();*/
- /* */
- /* delete aboutBox;*/
- }
-
- /***********************************|****************************************/
-
- //extern void HFSDatabaseTest ();
- //extern void RamDatabaseTest ();
- //extern void BTreeDatabaseTest ();
- extern void BufferTests ();
- extern void DiskLogTests ();
- extern void RunAllOCEOjectsTests ();
- extern void TRStringTests ();
- extern void CreationIDTests ();
- extern void DirDiscriminatorTests ();
- extern void TPathnameTests ();
- extern void TRLITests ();
- extern void TRecordIDTests ();
- extern void ObjectListTests ();
- extern void FileOfFilesTests ();
- // extern void DecompressTest ();
- // extern void CompressTest ();
- extern void VirtualFileTests ();
- extern void ViewCurrentHeap ();
- extern void ViewArchivedHeap ();
- extern void ArchiveCurrentHeap ();
- extern void CompareCurrentHeapWithArchive ();
-
- void HandleChrisMenu ( short item )
- {
- switch ( item )
- {
- case kLastChrisDebugFlag + 1:
- // HFSDatabaseTest ();
- break;
-
- case kLastChrisDebugFlag + 2:
- // RamDatabaseTest ();
- break;
-
- case kLastChrisDebugFlag + 3:
- // BTreeDatabaseTest ();
- break;
-
- case kLastChrisDebugFlag + 4:
- DiskLogTests ();
- break;
-
- case kLastChrisDebugFlag + 5:
- TDiskLog::DumpLog ( chris );
- break;
-
- case kLastChrisDebugFlag + 6:
- BufferTests ();
- break;
-
- case kLastChrisDebugFlag + 7:
- #ifndef THINK_CPLUS
- RunAllOCEOjectsTests ();
- #endif
- break;
-
- case kLastChrisDebugFlag + 8:
- FileOfFilesTests ();
- break;
-
- case kLastChrisDebugFlag + 9:
- // CompressTest ();
- break;
-
- case kLastChrisDebugFlag + 10:
- // DecompressTest ();
- break;
-
- case kLastChrisDebugFlag + 11:
- VirtualFileTests ();
- break;
-
- case kLastChrisDebugFlag + 12:
- ViewCurrentHeap ();
- break;
-
- case kLastChrisDebugFlag + 13:
- ViewArchivedHeap ();
- break;
-
- case kLastChrisDebugFlag + 14:
- ArchiveCurrentHeap ();
- break;
-
- case kLastChrisDebugFlag + 15:
- CompareCurrentHeapWithArchive ();
- break;
-
- default:
- chrisFlag.SetFlag ( item, !chrisFlag.Flag ( item ) );
- break;
- }
- }
-
- /***********************************|****************************************/
-
- void HandleGatewayMenu ( short item )
- {
- switch ( item )
- {
- case k2020ConnectorItem:
- case k2020HFSItem:
- case kHFSConnectorItem:
- case kATSHFSItem:
- case kHFSPagerItem:
- case kHFSHFSItem:
- CreateMailGatewayN(item);
- break;
-
- case kAutostart2020Item:
- ToggleAutostartOption();
- break;
-
- case kForceReconnectItem:
- // extern void PutEmptyBundleIntoOutgoingQueue();
- // PutEmptyBundleIntoOutgoingQueue();
- break;
-
- case kLast2020LetterItem:
- extern void ReenumerateLast2020Letter();
- ReenumerateLast2020Letter();
- break;
-
- case kAll2020LettersItem:
- extern void ReenumerateAll2020Letters();
- ReenumerateAll2020Letters();
- break;
-
- case kForceATSConnectItem:
- // extern void ForceATSToConnectToApplelink();
- // ForceATSToConnectToApplelink();
- break;
-
- case kDescribeHalfGateways:
- // extern void DescribeConnectorHalfGateway();
- // DescribeConnectorHalfGateway();
- break;
-
- case kShowThreadStatus:
- extern void ShowAllThreadStatus ( ostream& );
- ShowAllThreadStatus( keith );
- break;
- }
- }
-
- /***********************************|****************************************/
-
- void HandleFileMenu ( short item )
- {
- switch ( item)
- {
- case kFileShowMainWindowItem:
- void ShowMainWindow ();
- ShowMainWindow();
- break;
-
- case kFileShowLogWindowItem:
- if ( gTranscriptWindow )
- gTranscriptWindow->Show ();
- break;
-
- case kFileShowToALLetterLog:
- extern void ShowToApplelinkLetterLog ();
- ShowToApplelinkLetterLog();
- break;
-
- case kFileShotToAOCELetterLog:
- extern void ShowToAOCELetterLog ();
- ShowToAOCELetterLog();
- break;
-
- case kFileQuitItem:
- ShutDownGateway ( );
- break;
- }
- }
-
- /***********************************|****************************************/
-
- void ShowMainWindow ()
- {
-
- if ( ! gStatusWindow )
- gStatusWindow = new TStatusWindow ( 2000, 2000, & GetCurrentServerLoad );
-
- gStatusWindow->SelectWindow ();
-
- };
-
- /***********************************|****************************************/
-
- void ShowToApplelinkLetterLog ()
- {
- // extern TLetterLogWindow* gApplelinkLetterLogWindow;
-
- // if ( gApplelinkLetterLogWindow )
- // gApplelinkLetterLogWindow->Show();
- };
-
- /***********************************|****************************************/
-
- void ShowToAOCELetterLog ()
- {
- extern TLetterLogWindow* gAOCELetterLogWindow;
-
- if ( gAOCELetterLogWindow )
- gAOCELetterLogWindow->Show();
- };
-
- /***********************************|****************************************/
-
- void HandleControlMenu ( short item )
- {
- switch ( item)
- {
- case kControlPause:
- SetGatewayPausing ( ! IsGatewayPausing () );
- break;
-
- #if debug
-
- case kControlStep:
- SetGatewayPausing ( true );
- TYield ();
- break;
-
- case kControlShowThreadInfo:
- extern void ShowThreadStatusDialog ();
- ShowThreadStatusDialog ();
- break;
-
- case kControlShowMemoryInfo:
- break;
-
- case kControlShowMemoryInfoOften:
- break;
-
- case kControlForceQuit:
- gReadyToQuit = true;
- break;
-
- #endif
- }
- }
-
-
- /***********************************|****************************************/
-
- void DoMenuCommand(long menuResult)
- {
- short menuItem = (short) LowWord (menuResult);
-
- switch ( HighWord (menuResult) )
- {
- case kAppleMenu:
- switch ( menuItem )
- {
- case kDebugAboutItem:
- ShowAboutDialog ();
- break;
-
- default:
- {
- Str255 string;
- GetItem ( GetMHandle ( kAppleMenu ), menuItem, string );
- OpenDeskAcc ( string );
- }
- break;
- }
- break;
-
- case kFileMenu:
- HandleFileMenu ( menuItem );
- break;
-
- case kEditMenu:
- SystemEdit( menuItem-1);
- break;
-
- case kControlMenu:
- HandleControlMenu ( menuItem );
- break;
-
- case kGatewayMenu:
- HandleGatewayMenu ( menuItem );
- break;
-
- case kConfigMenu:
- if ( gMailGateway )
- {
- switch (menuItem)
- {
- case kConfigShowConfig:
- extern void ShowConfigDB();
- ShowConfigDB();
- break;
- case kConfigShowStatus:
- extern void ShowStatusDB();
- ShowStatusDB();
- break;
- case kConfigSetConfig:
- extern void DoSetTupleDialog();
- DoSetTupleDialog();
- break;
- }
- }
- break;
-
- case kKeithMenu:
- keithFlag.SetFlag ( menuItem, !keithFlag.Flag ( menuItem ) );
- break;
-
- case kSteveMenu:
- steveFlag.SetFlag ( menuItem, !steveFlag.Flag ( menuItem ) );
- break;
-
- case kChrisMenu:
- HandleChrisMenu ( menuItem );
- break;
-
- case kAddressesMenu:
- addressTypesFlag.SetFlag ( menuItem, !addressTypesFlag.Flag ( menuItem ) );
- break;
- }
-
- HiliteMenu(0);
- }
-
- /***********************************|****************************************/
-
- Boolean HandleDebuggingMenuEvent (EventRecord *event)
- {
- Boolean handledIt = false;
- short part;
- WindowPtr window;
- char key;
-
- switch ( event->what )
- {
- case mouseDown:
- part = FindWindow(event->where, &window);
- switch ( part )
- {
- case inMenuBar: /* process a mouse menu command (if any) */
- AdjustMenus();
- DoMenuCommand(MenuSelect(event->where));
- handledIt = true;
- break;
- }
- break;
-
- case keyDown:
- case autoKey: /* check for menukey equivalents */
- key = (char) event->message & charCodeMask;
- if ( event->modifiers & cmdKey ) /* Command key down */
- if ( event->what == keyDown )
- {
- AdjustMenus(); /* enable/disable/check menu items properly */
- DoMenuCommand(MenuKey(key));
- handledIt = true;
- }
- break;
- }
-
- return handledIt;
- }
-
- /***********************************|****************************************/
-